package com.crm.custinfo.mapper;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.crm.custinfo.domain.CustInfo;

/**
 * 客户信息Mapper接口
 *
 * @author ruoyi
 * @date 2023-12-28
 */
public interface CustInfoMapper {
    /**
     * 查询客户信息
     *
     * @param id 客户信息主键
     * @return 客户信息
     */
    public CustInfo selectCustInfoById(Long id);

    /**
     * 查询客户信息列表
     *
     * @param custInfo 客户信息
     * @return 客户信息集合
     */
    public List<CustInfo> selectCustInfoList(CustInfo custInfo);
    /**
     * 查询客户信息列表
     *
     * @param custInfo 客户信息
     * @return 客户信息集合
     */
    public CustInfo selectCustInfo(CustInfo custInfo);

    /**
     * 查询客户信息列表
     *
     * @param custInfo 客户信息
     * @return 客户信息集合
     */
    public List<CustInfo> selectCustInfoList2(CustInfo custInfo);

    /**
     * 查询我的客户列表+分页
     *
     * @param custInfo 客户信息
     * @return 客户信息集合
     */
    public List<CustInfo> selectMyCustList(CustInfo custInfo);
    /**
     * 新增客户信息
     *
     * @param custInfo 客户信息
     * @return 结果
     */
    public int insertCustInfo(CustInfo custInfo);

    /**
     * 修改客户信息
     *
     * @param custInfo 客户信息
     * @return 结果
     */
    public int updateCustInfo(CustInfo custInfo);

    /**
     * 删除客户信息
     *
     * @param id 客户信息主键
     * @return 结果
     */
    public int deleteCustInfoById(Long id);

    /**
     * 批量删除客户信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCustInfoByIds(Long[] ids);

    /**
     * 获取客户数量
     *
     * @param params
     * @return
     */
    public int findCountByProperties(Map<String, Object> params);

    /**
     * 获取星级数据
     *
     * @param params
     * @return
     */
    public List<Map<String, Object>> getStarStatusDetail(Map<String, Object> params);
    public List<Map<String, Object>> getStarStatusDetail2(Map<String, Object> params);
    /**
     * 获取当天的用户数量
     *
     * @param params
     * @return
     */
    public int findDistCount(Map<String, Object> params);

    /**
     * 将客户批量加入公共池
     *
     * @param ids 需要更新的数据主键集合
     * @return 结果
     */
    public int batchUpdateToPublic(Long[] ids);

    /**
     * 判断是否存在相同数据
     *
     * @param mobileMd5 加密号码
     * @return 结果
     */
    public int countByMd5(String mobileMd5);
    /**
     * 获取未指派的数据总量
     *
     * @param city 城市
     * @return 结果
     */
    public int countByNotAssigned(String city);
    /**
     * 将客户批量加入公共池
     *
     * @param custInfo 需要更新的数据主键集合
     * @return 结果
     */
    public int batchToBeAllocated(CustInfo custInfo);

    /**
     * 机构分配来源统计
     *
     * @param params 获取数据的集合
     * @return 结果
     */
    public List<Map<String, Object>> orgDistributeDataStatics(Map<String, Object> params);
    /**
     * 渠道分配来源统计
     *
     * @param params 获取数据的集合
     * @return 结果
     */
    public List<Map<String, Object>> channelDataStatics(Map<String, Object> params);


    /**
     * 日内部数据统计报表
     *
     * @param params 获取数据的集合
     * @return 结果
     */
    public List<Map<String, Object>> starlevelDataStatics(Map<String, Object> params);

    /**
     * 日内部数据统计（额度）
     *
     * @param params 获取数据的集合
     * @return 结果
     */
    public List<Map<String, Object>> custdebtlimitdataStatics(Map<String, Object> params);

    /**
     * 用户成本统计
     *
     * @param params 获取数据的集合
     * @return 结果
     */
    public List<Map<String, Object>> userCostStatics(Map<String, Object> params);

    /**
     * 个人数据统计
     *
     * @param params 获取数据的集合
     * @return 结果
     */
    public List<Map<String, Object>> userDataStatics(Map<String, Object> params);

    /**
     * 公共池数据统计
     *
     * @param params 获取数据的集合
     * @return 结果
     */
    public List<Map<String, Object>> publicCustDataStatics(Map<String, Object> params);

    /**
     * 团队数据统计-部门
     *
     * @param params 获取数据的集合
     * @return 结果
     */
    public List<Map<String, Object>> teamCustDataStatics(Map<String, Object> params);

    /**
     * 团队数据统计-个人
     *
     * @param params 获取数据的集合
     * @return 结果
     */
    public List<Map<String, Object>> teamCustPersonalDataStatics(Map<String, Object> params);
    /**
     * 拨打数据情况统计
     *
     * @param params 获取数据的集合
     * @return 结果
     */
    public List<Map<String, Object>> callCustDataStatics(Map<String, Object> params);

    /**
     * 获取业务员的客户状态分钟
     *
     * @param params 获取数据的集合
     * @return 结果
     */
    public List<Map<String, Object>> groupByCustStatus(Map<String, Object> params);
    /**
     * 根据号码的前三位匹配数据
     *
     * @param params 获取数据的集合
     * @return 结果
     */
    public List<Map<String, Object>> getCustInfoByMobilePrevious3(Map<String, Object> params);
}
